home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / dev / e / 2b_CrtvE_src.lha / chkident.s < prev    next >
Text File  |  2001-01-29  |  5KB  |  247 lines

  1. ;;CHIDENT
  2.  
  3. ; ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ;
  4. ;   The CheckIdents and Procs part                              ;
  5. ; ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;
  6.  
  7.  
  8. CHECKIDENTS:
  9.     MOVE.W  #4,CURSPOT
  10.     MOVE.L  #IDENTHASH+4,A5
  11. .1A:    MOVE.L  A5,A4
  12.     ADDQ.L  #4,A5
  13.     CMP.L   #IDENTHASH+1028,A5
  14.     BEQ.W   .2
  15. .1: MOVE.L  -(A4),A4
  16.     MOVE.L  A4,D0
  17.     BEQ.S   .1A
  18.     BTST    #0,5(A4)        ; SEE IF UNREFERENCED
  19.     BEQ .UNREF
  20. .UNRB:  MOVE.B  4(A4),D0
  21.     TST.B   D0
  22.     BEQ.S   .1          ; WAS .4
  23.     CMP.B   #GLOBV,D0
  24.     BEQ.W   .3
  25.     CMP.B   #LOCV,D0
  26.     BNE .5
  27.     MOVEQ   #1,D0           ; -->LOC
  28.     MOVE.L  D0,(A4)         ; PTR TO CHAR
  29.     MOVE.L  6(A4),A3
  30.     TST.W   10(A4)          ; AN ARG OR REGVAR
  31.     BNE.S   .1
  32.  
  33.     ; no test for regalloc here.
  34.  
  35. ;bra.s .pp
  36. ;.ppp: dc.l $1e0000
  37. ;.pp:
  38. ;move.l .ppp,a0
  39. ;move.l 12(a4),(a0)+
  40. ;move.l a0,.ppp
  41.  
  42.     MOVE.L  VARHEAVY(A4),D0     ; if 0 then cannot be regvar
  43.     BEQ.W   .NR
  44.     btst    #4,2(a3)
  45.     bne     .NR
  46.  
  47.     MOVE.W  MAXREGALLOC(PC),D0
  48.     CMP.B   3(A3),D0
  49.     BLE.S   .RCALC
  50.  
  51.     BSET    #3,5(A4)        ; MAKE IT A REGVAR!
  52.     ADDQ.B  #1,3(A3)
  53.     MOVE.B  3(A3),D7
  54.     EXT.W   D7
  55.     NEG.W   D7
  56.     ADDQ.W  #8,D7
  57.     MOVE.W  D7,10(A4)       ; register nº
  58.     MOVE.L  26(A3),D7
  59.     BTST    #3,2(A3)
  60.     BNE.S   .GOTT
  61.     GETM    A0
  62.     MOVE.L  A0,D7
  63.     MOVE.L  A0,26(A3)
  64.     BSET    #3,2(A3)        ; HASTABLE
  65.     MOVEQ   #MAXREGVARS,D0      ; ONE TOO MUCH: NIL TERM
  66. .ATL:   CLR.L   (A0)+
  67.     DBRA    D0,.ATL
  68.     DONEM   A0
  69. .GOTT:  MOVE.L  D7,A0
  70. .PL:    TST.L   (A0)+
  71.     BNE.S   .PL
  72.     MOVE.L  A4,-(A0)        ; ONE OF THE REGVARS
  73.     BRA.W   .1
  74.  
  75. .RCALC: BTST    #3,2(A3)
  76.     BEQ.S   .NR
  77.     MOVE.L  26(A3),A0       ; A0=NOW FIND SMALLEST
  78.     MOVE.L  #$7FFFFFFF,D1       ; D1=SMALLEST HEAVYNESS
  79.     MOVEQ   #0,D2
  80. .RCS:   MOVE.L  (A0)+,D0
  81.     BEQ.S   .RCSO
  82.     MOVE.L  D0,A1
  83.     CMP.L   VARHEAVY(A1),D1
  84.     BMI.S   .RCS
  85.     MOVE.L  VARHEAVY(A1),D1
  86.     MOVE.L  A1,D2           ; D2=BLACK SHEEP
  87.     MOVE.L  A0,A2           ; A2=PLUG BACK
  88.     BRA.S   .RCS
  89. .RCSO:  TST.L   D2
  90.     BNE.S   .RCR
  91.     INTERN  104
  92. .RCR:   MOVE.L  D2,A0           ; A0=OTHER IDENT
  93.     MOVE.L  VARHEAVY(A0),D0
  94.     CMP.L   VARHEAVY(A4),D0
  95.     BPL.S   .NR
  96.     MOVE.L  A4,-(A2)
  97.     MOVE.W  10(A0),10(A4)
  98.     BSET    #3,5(A4)
  99.     BCLR    #3,5(A0)
  100.     MOVE.W  4(A3),D0        ; MAKE IT A NEW LOCOFFSET
  101.     SUBQ.W  #4,D0
  102.     MOVE.W  D0,10(A0)
  103.     MOVE.W  D0,4(A3)
  104.     BRA .1
  105.  
  106. .NR:    MOVE.W  4(A3),D0        ; MAKE IT A NEW LOCOFFSET
  107.     SUBQ.W  #4,D0
  108.     MOVE.W  D0,10(A4)
  109.     MOVE.W  D0,4(A3)
  110.     BRA.W   .1
  111.  
  112. .2: TST.W   .UR         ; EXIT. BSR FROM OTHER POINTS
  113.     BNE .WL
  114.     RTS
  115. .WL:    MOVEQ   #1,D3
  116.     MOVE.L  #.WL2,D2
  117.     BSR WRITECON
  118.     RTS
  119. .WL2:   DC.B    10,0
  120.  
  121. .3: GINFO   (A4),A3,A4
  122.     MOVEQ   #1,D0           ; SET FLAGS=PTR TO CHAR
  123.     MOVE.L  D0,(A4)         ; now - check for special structures;
  124.  
  125.  
  126.     
  127.     CMPA.L  PSEUDOA4-40,A4
  128.     BNE     .NOTEXEC
  129.     TST.L   OBJ_EXECBASE
  130.     BEQ     .NOTEXEC
  131.     MOVE.L  OBJ_EXECBASE(PC),(A4)
  132. .NOTEXEC:
  133.     CMPA.L  PSEUDOA4-48,A4
  134.     BNE     .NOTINTUI
  135.     TST.L   OBJ_INTUIBASE
  136.     BEQ     .NOTINTUI
  137.     MOVE.L  OBJ_INTUIBASE(PC),(A4)
  138. .NOTINTUI:
  139.     CMPA.L  PSEUDOA4-52,A4
  140.     BNE     .NOTGFX
  141.     TST.L   OBJ_GFXBASE
  142.     BEQ     .NOTGFX
  143.     MOVE.L  OBJ_GFXBASE(PC),(A4)
  144. .NOTGFX:
  145.     CMPA.L  PSEUDOA4-44,A4
  146.     BNE     .NOTDOS
  147.     TST.L   OBJ_DOSBASE
  148.     BEQ     .NOTDOS
  149.     MOVE.L  OBJ_DOSBASE(PC),(A4)
  150. .NOTDOS:
  151.     CMPA.L  PSEUDOA4-16,A4
  152.     BNE     .NOTRST
  153.     TST.L   OBJ_RASTPORT
  154.     BEQ     .NOTRST
  155.     MOVE.L  OBJ_RASTPORT(PC),(A4)
  156. .NOTRST:
  157.     CMPA.L  PSEUDOA4-36,A4
  158.     BNE     .NOTWBM
  159.     TST.L   OBJ_WBMESSAGE
  160.     BEQ     .NOTWBM
  161.     MOVE.L  OBJ_WBMESSAGE(PC),(A4)
  162. .NOTWBM:
  163.     TST.W   10(A4)
  164.     BNE .1
  165.     SUBQ.W  #4,NRGLOB       ; -->GLOB
  166.     MOVE.W  NRGLOB(PC),10(A4)
  167.     BRA .1
  168.  
  169. .5: CMP.W   #-4,10(A4)
  170.     BEQ .1
  171.     CMP.W   #-3,10(A4)
  172.     BEQ .1
  173.     CMP.W   #-2,10(A4)      ; -->LAB
  174.     BEQ.S   .6
  175.     CMP.W   #-1,10(A4)
  176.     BNE.S   .ERL
  177.     CLR.L   6(A4)
  178. .6: MOVE.L  (A4),A1         ; CHECK FOR "MAIN"
  179.     CMP.B   #"m",(A1)
  180.     BNE.S   .NM
  181.     CMP.B   #"a",1(A1)
  182.     BNE.S   .NM
  183.     CMP.B   #"i",2(A1)
  184.     BNE.S   .NM
  185.     CMP.B   #"n",3(A1)
  186.     BNE.S   .NM
  187.     CMP.B   #0,4(A1)
  188.     BNE.S   .NM
  189.     MOVE.W  #1,10(A4)       ; SET LAB MAIN
  190.     MOVE.L  6(A4),A1
  191.     TST.W   (A1)            ; MAIN --> NO ARGS
  192.     BNE iERROR23
  193.     BRA .1
  194. .NM:    MOVE.W  CURLABNAME+2(PC),10(A4)
  195.     ADDQ.L  #1,CURLABNAME
  196.     BSR CHECKLABBUF
  197.     BRA .1
  198. .ERL:   BSR .2
  199.     BRA iERROR14
  200.  
  201. .UNREF: BTST    #1,5(A4)
  202.     BNE .UNRB
  203.     TST.W   .UR
  204.     BNE.S   .12
  205.     MOVE.L  #.13,D2
  206.     MOVE.L  #.14,D3
  207.     SUB.L   D2,D3
  208.     BSR WRITECON
  209.     BRA.S   .16
  210. .12:    MOVEQ   #1,D3
  211.     MOVE.L  #.14,D2
  212.     BSR WRITECON
  213. .16:    MOVE.L  (A4),A0
  214. .15:    TST.B   (A0)+
  215.     BNE.S   .15
  216.     SUB.L   (A4),A0
  217.     SUBQ.L  #1,A0
  218.     MOVE.L  A0,D3
  219.     MOVE.L  (A4),D2
  220.     BSR WRITECON
  221.     MOVE.W  #-1,.UR
  222.     BRA .UNRB
  223. .13:    DC.B    "UNREFERENCED: "
  224. .14:    DC.B    ","
  225.     EVEN
  226. .UR:    DC.W    0           ; MESSY DONE?
  227.  
  228. NRGLOB:
  229.     DC.W    GLOBOFF         ; HASTABE initialized
  230.  
  231. CHECKLABBUF:
  232.     SUBQ.W  #1,.1
  233.     BEQ.S   .2
  234.     RTS
  235. .2: MOVE.L  D0,-(A7)
  236.     MOVE.W  #25,.1
  237.     MOVE.L  CURLABNAME(PC),D0
  238.     LSL.L   #2,D0
  239.     ADD.L   LABM+8(PC),D0
  240.     MOVE.L  D0,LABM
  241.     BSR REALLOC6
  242.     MOVE.L  (A7)+,D0
  243.     RTS
  244. .1: DC.W    10
  245. ;*-*
  246.  
  247.